﻿using System;
using System.Windows.Forms;

using Rsdn.TreeGrid;

namespace Rsdn.Janus.ObjectModel
{
	/// <summary>
	/// Подсистема «Избранное»
	/// </summary>
	public class FavoritesFeature : Feature, IGetData
	{
		#region Constructor(s) & Реализация Singleton 

		private FavoritesFeature()
		{
			_description = SR.Favorites.DisplayName;
		}

		private static FavoritesFeature _instance;

		public static FavoritesFeature Instance
		{
			get
			{
				if (_instance == null)
					lock (typeof(Forums))
						if (_instance == null)
							_instance = new FavoritesFeature();
				return _instance;
			}
		}

		#endregion

		#region Members

		public override string Key
		{
			get { return "Favorites"; }                                        //MLHIDE
		}

        /// <summary>
        /// Проверяет нужно ли обновление объекта если статус сообщения изменился.
        /// Требуется если нужно обновить одновременно несколько папок (форумов).
        /// Функция должна быть достаточно быстрой иначе проще перечитать всю папку.
        /// </summary>
        /// <param name="msg">Проверяемое сообщение.</param>
        /// <returns>
        /// 	<c>true</c> если обновление необходимо; иначе, <c>false</c>.
        /// </returns>
	    public override bool IsUpdateNeed(object msg)
	    {
            // don't need to update favorite folder if any message changed
	        return false;
	    }

	    public override void Refresh()
	    {
            // фаворитам не требуется никакого обновления
	    }

	    protected override Control CreateGuiControl()
		{
			return FavoritesDummyForm.Instance;
		}

		#endregion

		#region IGetData

		void IGetData.GetData(NodeInfo nodeInfo, CellInfo[] cellData)
		{
			cellData[0].Text = Description;
			cellData[0].ImageIndex = Features.Instance.FavoritesImageIndex;
		}

		#endregion
	}
}